Skip to content

NVIDIA-554: DPU-host mode: use ConfigMap for OVN feature enablement instead of per-node script gating#2944

Open
tsorya wants to merge 3 commits intoopenshift:masterfrom
tsorya:igal/dpu-host-mode
Open

NVIDIA-554: DPU-host mode: use ConfigMap for OVN feature enablement instead of per-node script gating#2944
tsorya wants to merge 3 commits intoopenshift:masterfrom
tsorya:igal/dpu-host-mode

Conversation

@tsorya
Copy link
Copy Markdown
Contributor

@tsorya tsorya commented Mar 20, 2026

NVIDIA-554: DPU-host mode: use ConfigMap for OVN feature enablement instead of per-node script gating

    Feature flags (egress IP, multicast, multi-network, network
    segmentation, admin network policy, multi-external-gateway, etc.)
    are managed via the cluster-wide ConfigMap (004-config.yaml) passed
    to ovnkube through --config-file. They do not need per-node gating
    in the startup script.

    OVN_NODE_MODE remains used only for DPU-host structural differences:
    gateway interface, ovnkube-node-mode flag, and init-controller.

    Also re-applies the feature gate cleanup from f5b8490 (removal of
    OVN_ADMIN_NETWORK_POLICY_ENABLE template references) and removes
    redundant CLI flags from 008-script-lib.yaml that duplicate what
    the ConfigMap already provides.

    Co-authored-by: Cursor <[email protected]>
    Made-with: Cursor

This reverts commit 6f5697cb0b25fe1ad6cb48a9c969653475afa4b9

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Mar 20, 2026
@openshift-ci-robot
Copy link
Copy Markdown
Contributor

openshift-ci-robot commented Mar 20, 2026

@tsorya: This pull request references NVIDIA-554 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "4.22.0" version, but no target version was set.

Details

In response to this:

NVIDIA-554: DPU-host mode: use ConfigMap for OVN feature enablement instead of per-node script gating

   Feature flags (egress IP, multicast, multi-network, network
   segmentation, admin network policy, multi-external-gateway, etc.)
   are managed via the cluster-wide ConfigMap (004-config.yaml) passed
   to ovnkube through --config-file. They do not need per-node gating
   in the startup script.

   OVN_NODE_MODE remains used only for DPU-host structural differences:
   gateway interface, ovnkube-node-mode flag, and init-controller.

   Also re-applies the feature gate cleanup from f5b8490 (removal of
   OVN_ADMIN_NETWORK_POLICY_ENABLE template references) and removes
   redundant CLI flags from 008-script-lib.yaml that duplicate what
   the ConfigMap already provides.

   Co-authored-by: Cursor <[email protected]>
   Made-with: Cursor

This reverts commit 6f5697c

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 20, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 84fef1ce-3fae-42e8-a812-0b5fc89d6435

📥 Commits

Reviewing files that changed from the base of the PR and between ed84508 and 526a5aa.

📒 Files selected for processing (1)
  • pkg/network/ovn_kubernetes_test.go
🚧 Files skipped from review as they are similar to previous changes (1)
  • pkg/network/ovn_kubernetes_test.go

Walkthrough

Per-node OVN_NODE_MODE-based feature gating was removed; feature enablement is now configured cluster-wide via the ovnkube ConfigMap. Startup scripts and control-plane manifests stop constructing/passing per-node feature flags; documentation and tests were updated to match the centralized configuration model.

Changes

Cohort / File(s) Summary
Documentation
README.md, docs/architecture.md, docs/operands.md, docs/ovn_node_mode.md
Removed sections describing per-node/DPU-host feature disabling and mode-driven feature flags; replaced with guidance that OVN_NODE_MODE is an identifier only and feature flags are managed cluster-wide via the ovnkube ConfigMap.
Startup script library
bindata/network/ovn-kubernetes/common/008-script-lib.yaml
Removed conditional construction/clearing of per-node feature flag variables (egress, multicast variable handling, multi-network, multi-networkpolicy, admin-network-policy, preconfigured UDN, DNS resolver). Simplified gateway_interface logic; pass --enable-multicast directly and drop egress/multi-external-gateway CLI flags.
Managed manifests / Config
bindata/network/ovn-kubernetes/managed/004-config.yaml, bindata/network/ovn-kubernetes/managed/ovnkube-control-plane.yaml
ConfigMap now emits egress flags and enable-multi-network, enable-admin-network-policy, enable-multi-external-gateway unconditionally; control-plane manifest no longer constructs/passes corresponding conditional CLI flags and adds an explicit --enable-multicast.
Self-hosted manifests / Config
bindata/network/ovn-kubernetes/self-hosted/004-config.yaml, bindata/network/ovn-kubernetes/self-hosted/ovnkube-control-plane.yaml
Unconditionally enabled egress-related flags, enable-multi-network, enable-admin-network-policy, and enable-multi-external-gateway in ovnkube ConfigMap; removed per-node conditional CLI flag plumbing from control-plane startup and added explicit --enable-multicast.
Tests
pkg/network/ovn_kubernetes_test.go
Updated expected rendered ovnkube.conf to include additional [ovnkubernetesfeature] entries (egress flags, enable-multi-network, enable-admin-network-policy, enable-multi-external-gateway); removed helper functions and tests tied to per-node/render overrides. Review updated expectations and deleted helpers.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 golangci-lint (2.11.4)

level=error msg="Running error: context loading failed: failed to load packages: failed to load packages: failed to load with go/packages: err: exit status 1: stderr: go: inconsistent vendoring in :\n\tgithub.com/Masterminds/[email protected]: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgithub.com/Masterminds/sprig/[email protected]: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgithub.com/containernetworking/[email protected]: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgithub.com/ghodss/[email protected]: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgithub.com/go-bindata/[email protected]+incompatible: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgithub.com/onsi/[email protected]: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tgithub.com/ope

... [truncated 17356 characters] ...

ired in go.mod, but not marked as explicit in vendor/modules.txt\n\tk8s.io/gengo/[email protected]: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tk8s.io/[email protected]: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tk8s.io/[email protected]: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tsigs.k8s.io/[email protected]: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\tsigs.k8s.io/structured-merge-diff/[email protected]: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt\n\n\tTo ignore the vendor directory, use -mod=readonly or -mod=mod.\n\tTo sync the vendor directory, run:\n\t\tgo mod vendor\n"


Comment @coderabbitai help to get the list of available commands and usage tips.

@openshift-ci openshift-ci bot requested review from arghosh93 and miheer March 20, 2026 17:49
@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Mar 20, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: tsorya
Once this PR has been reviewed and has the lgtm label, please assign kyrtapz for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
bindata/network/ovn-kubernetes/common/008-script-lib.yaml (1)

701-724: ⚠️ Potential issue | 🟠 Major

Multicast should be moved to 004-config.yaml per documented design.

The documentation states that "Feature enablement (egress IP, multicast, multi-network, network segmentation, admin network policy, etc.) is managed through the cluster-wide ConfigMap (004-config.yaml)", but --enable-multicast is still hardcoded as a CLI flag at line 723. The 004-config.yaml templates contain dozens of enable-* settings (e.g., enable-egress-ip, enable-multi-network, enable-admin-network-policy) but enable-multicast is absent. Either move multicast configuration into the config file to align with the documented design and other features, or update the documentation to clarify why multicast remains CLI-driven.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@bindata/network/ovn-kubernetes/common/008-script-lib.yaml` around lines 701 -
724, The script currently hardcodes the CLI flag --enable-multicast in the
ovnkube exec line; move multicast feature toggling into the cluster-wide
ConfigMap like other features in 004-config.yaml. Add a ConfigMap/template key
(e.g., enable-multicast) to 004-config.yaml, expose it as a rendered variable
(e.g., multicast_enable_flag) alongside the existing flags (similar to
network_observability_enabled_flag), then replace the literal --enable-multicast
in the exec invocation with the variable ${multicast_enable_flag} (or remove it
when false). Alternatively, if you intend multicast to stay CLI-driven, update
the docs to explicitly state why --enable-multicast remains a hardcoded flag
instead of being managed via 004-config.yaml.
🧹 Nitpick comments (1)
pkg/network/ovn_kubernetes_test.go (1)

296-306: Add one DPU-host regression case.

These updated goldens prove the new [ovnkubernetesfeature] contents, but they still don't lock in the behavior this PR is changing: dpu-host should stop rewriting feature flags while still changing gateway/interface selection, --ovnkube-node-mode, and init_ovnkube_controller. A small render test around ovnkube-lib.sh would make that contract much harder to regress.

Also applies to: 342-352, 401-412, 463-474, 525-535, 586-596, 636-646, 689-699, 735-745, 782-793, 831-841, 877-887, 925-935, 972-982

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pkg/network/ovn_kubernetes_test.go` around lines 296 - 306, Add a single
regression test case in pkg/network/ovn_kubernetes_test.go that renders
ovnkube-lib.sh for the dpu-host node mode: feed the test input containing the
full [ovnkubernetesfeature] block shown in the diff, set node mode to
"dpu-host", and assert that the output preserves the entire
[ovnkubernetesfeature] block exactly (no feature flags rewritten) while still
updating only the gateway/interface selection, the --ovnkube-node-mode value to
"dpu-host", and the init_ovnkube_controller behavior; place the case alongside
the existing render tests in the file that exercise ovnkube-lib.sh so it will
fail if dpu-host rewrites feature flags.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@bindata/network/ovn-kubernetes/common/008-script-lib.yaml`:
- Around line 701-724: The script currently hardcodes the CLI flag
--enable-multicast in the ovnkube exec line; move multicast feature toggling
into the cluster-wide ConfigMap like other features in 004-config.yaml. Add a
ConfigMap/template key (e.g., enable-multicast) to 004-config.yaml, expose it as
a rendered variable (e.g., multicast_enable_flag) alongside the existing flags
(similar to network_observability_enabled_flag), then replace the literal
--enable-multicast in the exec invocation with the variable
${multicast_enable_flag} (or remove it when false). Alternatively, if you intend
multicast to stay CLI-driven, update the docs to explicitly state why
--enable-multicast remains a hardcoded flag instead of being managed via
004-config.yaml.

---

Nitpick comments:
In `@pkg/network/ovn_kubernetes_test.go`:
- Around line 296-306: Add a single regression test case in
pkg/network/ovn_kubernetes_test.go that renders ovnkube-lib.sh for the dpu-host
node mode: feed the test input containing the full [ovnkubernetesfeature] block
shown in the diff, set node mode to "dpu-host", and assert that the output
preserves the entire [ovnkubernetesfeature] block exactly (no feature flags
rewritten) while still updating only the gateway/interface selection, the
--ovnkube-node-mode value to "dpu-host", and the init_ovnkube_controller
behavior; place the case alongside the existing render tests in the file that
exercise ovnkube-lib.sh so it will fail if dpu-host rewrites feature flags.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 5c1994eb-63ed-421c-ab98-8900f240f6ff

📥 Commits

Reviewing files that changed from the base of the PR and between 5b0900b and f58272e.

📒 Files selected for processing (10)
  • README.md
  • bindata/network/ovn-kubernetes/common/008-script-lib.yaml
  • bindata/network/ovn-kubernetes/managed/004-config.yaml
  • bindata/network/ovn-kubernetes/managed/ovnkube-control-plane.yaml
  • bindata/network/ovn-kubernetes/self-hosted/004-config.yaml
  • bindata/network/ovn-kubernetes/self-hosted/ovnkube-control-plane.yaml
  • docs/architecture.md
  • docs/operands.md
  • docs/ovn_node_mode.md
  • pkg/network/ovn_kubernetes_test.go
💤 Files with no reviewable changes (3)
  • README.md
  • docs/architecture.md
  • docs/operands.md

@tsorya
Copy link
Copy Markdown
Contributor Author

tsorya commented Mar 21, 2026

/retest-required

@tsorya
Copy link
Copy Markdown
Contributor Author

tsorya commented Mar 21, 2026

/test ?

@tsorya
Copy link
Copy Markdown
Contributor Author

tsorya commented Mar 22, 2026

oc exec -it -n openshift-ovn-kubernetes ovnkube-node-bpkjk -- bash [root@dhcp-8-231-235 ~]# ovn-nbctl find ACL | grep -i mcast match : "(ip4.mcast || mldv1 || mldv2 || (ip6.dst[120..127] == 0xff && ip6.dst[116] == 1))" match : "(ip4.mcast || mldv1 || mldv2 || (ip6.dst[120..127] == 0xff && ip6.dst[116] == 1))" match : "outport == @a15696136357465712812 && (igmp || (ip4.src == $a14513626322132345176 && ip4.mcast))" match : "outport == @a4743249366342378346 && (ip4.mcast || mldv1 || mldv2 || (ip6.dst[120..127] == 0xff && ip6.dst[116] == 1))" match : "inport == @a4743249366342378346 && (ip4.mcast || mldv1 || mldv2 || (ip6.dst[120..127] == 0xff && ip6.dst[116] == 1))" match : "inport == @a15696136357465712812 && ip4.mcast"

10.130.0.3 : unicast, xmt/rcv/%loss = 10/10/0%, min/avg/max/std-dev = 0.290/0.404/1.026/0.222 10.130.0.3 : multicast, xmt/rcv/%loss = 10/9/9% (seq>=2 0%), min/avg/max/std-dev = 0.307/0.522/1.115/0.319 10.128.0.30 : unicast, xmt/rcv/%loss = 10/10/0%, min/avg/max/std-dev = 0.314/0.449/0.717/0.140 10.128.0.30 : multicast, xmt/rcv/%loss = 10/9/9% (seq>=2 0%), min/avg/max/std-dev = 0.285/0.445/0.823/0.155

10.128.0.30 : unicast, xmt/rcv/%loss = 10/10/0%, min/avg/max/std-dev = 0.307/0.488/0.991/0.218 10.128.0.30 : multicast, xmt/rcv/%loss = 10/9/9% (seq>=2 0%), min/avg/max/std-dev = 0.313/0.499/1.212/0.273 10.129.0.7 : unicast, xmt/rcv/%loss = 10/10/0%, min/avg/max/std-dev = 0.307/0.462/1.057/0.252 10.129.0.7 : multicast, xmt/rcv/%loss = 10/9/9% (seq>=2 0%), min/avg/max/std-dev = 0.320/0.501/1.513/0.382

@tsorya
Copy link
Copy Markdown
Contributor Author

tsorya commented Mar 26, 2026

/retest

@openshift-ci openshift-ci bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Mar 26, 2026
@tsorya tsorya force-pushed the igal/dpu-host-mode branch from f58272e to 7f928af Compare March 26, 2026 17:49
@openshift-ci openshift-ci bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Mar 26, 2026
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@pkg/network/ovn_kubernetes_test.go`:
- Around line 298-308: Update the two failing tests to match the ConfigMap-based
migration: in TestOVNKubernetesControlPlaneFlags and
TestOVNKubernetesScriptLibCombined remove assertions that expect the removed CLI
flags and script-lib variables (the old enable-* CLI flags and corresponding
script-lib vars) and instead assert the presence/contents of the new
ovnkube.conf configmap golden (the block shown at lines 298–308). Also either
implement or remove references to the missing helpers
renderControlPlaneWithOverrides and renderScriptLibWithOverrides used by those
tests—if keeping them, implement helpers that render using the new ConfigMap
migration semantics and return the rendered ovnkube.conf/script-lib output;
otherwise delete calls to them and inline the appropriate rendering/assertion
using existing render helpers. Ensure all references are to the test names
TestOVNKubernetesControlPlaneFlags, TestOVNKubernetesScriptLibCombined and the
helper names renderControlPlaneWithOverrides/renderScriptLibWithOverrides so
reviewers can locate the edits.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d16edd6a-c511-46cc-ada2-5d68285bf3f3

📥 Commits

Reviewing files that changed from the base of the PR and between f58272e and 7f928af.

📒 Files selected for processing (10)
  • README.md
  • bindata/network/ovn-kubernetes/common/008-script-lib.yaml
  • bindata/network/ovn-kubernetes/managed/004-config.yaml
  • bindata/network/ovn-kubernetes/managed/ovnkube-control-plane.yaml
  • bindata/network/ovn-kubernetes/self-hosted/004-config.yaml
  • bindata/network/ovn-kubernetes/self-hosted/ovnkube-control-plane.yaml
  • docs/architecture.md
  • docs/operands.md
  • docs/ovn_node_mode.md
  • pkg/network/ovn_kubernetes_test.go
💤 Files with no reviewable changes (3)
  • docs/architecture.md
  • docs/operands.md
  • README.md
✅ Files skipped from review due to trivial changes (3)
  • bindata/network/ovn-kubernetes/managed/004-config.yaml
  • docs/ovn_node_mode.md
  • bindata/network/ovn-kubernetes/common/008-script-lib.yaml
🚧 Files skipped from review as they are similar to previous changes (1)
  • bindata/network/ovn-kubernetes/self-hosted/004-config.yaml

Comment thread pkg/network/ovn_kubernetes_test.go
@openshift-ci openshift-ci bot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Mar 29, 2026
tsorya added 2 commits March 30, 2026 21:29
…nstead of per-node script gating

    Feature flags (egress IP, multicast, multi-network, network
    segmentation, admin network policy, multi-external-gateway, etc.)
    are managed via the cluster-wide ConfigMap (004-config.yaml) passed
    to ovnkube through --config-file. They do not need per-node gating
    in the startup script.

    OVN_NODE_MODE remains used only for DPU-host structural differences:
    gateway interface, ovnkube-node-mode flag, and init-controller.

    Also re-applies the feature gate cleanup from f5b8490 (removal of
    OVN_ADMIN_NETWORK_POLICY_ENABLE template references) and removes
    redundant CLI flags from 008-script-lib.yaml that duplicate what
    the ConfigMap already provides.

    Co-authored-by: Cursor <[email protected]>
    Made-with: Cursor

This reverts commit 6f5697c.
Remove enable-multicast=true from ovnkube config maps and pass it
directly as --enable-multicast on the ovnkube CLI for node and
control plane processes (both self-hosted and managed).

Made-with: Cursor
@tsorya tsorya force-pushed the igal/dpu-host-mode branch from 7f928af to f93b3fc Compare March 31, 2026 01:30
@openshift-ci openshift-ci bot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Mar 31, 2026
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
pkg/network/ovn_kubernetes_test.go (1)

1020-1024: ⚠️ Potential issue | 🟠 Major

Test expectation appears inconsistent with ConfigMap template changes.

The "enable network connect (DevPreview)" test case expected output (lines 1020-1024) is missing the egress feature flags (enable-egress-ip=true, enable-egress-firewall=true, enable-egress-qos=true, enable-egress-service=true) and other flags (enable-multi-network=true, enable-admin-network-policy=true, enable-multi-external-gateway=true) that are now unconditionally emitted in the ConfigMap template per this PR.

All other test cases in this file were updated to include these flags, but this one appears to have been missed. This will likely cause the test to fail.

🐛 Proposed fix to add missing flags
 [ovnkubernetesfeature]
+enable-egress-ip=true
+enable-egress-firewall=true
+enable-egress-qos=true
+enable-egress-service=true
 egressip-node-healthcheck-port=9107
+enable-multi-network=true
 enable-network-segmentation=true
 enable-preconfigured-udn-addresses=true
+enable-admin-network-policy=true
+enable-multi-external-gateway=true
 enable-network-connect=true
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pkg/network/ovn_kubernetes_test.go` around lines 1020 - 1024, The test case
"enable network connect (DevPreview)" in ovn_kubernetes_test.go has an outdated
expected ConfigMap snippet; update its expected output to include the
unconditionally emitted flags now present in the template: add
enable-egress-ip=true, enable-egress-firewall=true, enable-egress-qos=true,
enable-egress-service=true, enable-multi-network=true,
enable-admin-network-policy=true, and enable-multi-external-gateway=true to the
expected config string for that test case so it matches the other updated cases.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@pkg/network/ovn_kubernetes_test.go`:
- Around line 1020-1024: The test case "enable network connect (DevPreview)" in
ovn_kubernetes_test.go has an outdated expected ConfigMap snippet; update its
expected output to include the unconditionally emitted flags now present in the
template: add enable-egress-ip=true, enable-egress-firewall=true,
enable-egress-qos=true, enable-egress-service=true, enable-multi-network=true,
enable-admin-network-policy=true, and enable-multi-external-gateway=true to the
expected config string for that test case so it matches the other updated cases.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 37e2203b-5661-4153-8807-475f50c6af4f

📥 Commits

Reviewing files that changed from the base of the PR and between 7f928af and f93b3fc.

📒 Files selected for processing (10)
  • README.md
  • bindata/network/ovn-kubernetes/common/008-script-lib.yaml
  • bindata/network/ovn-kubernetes/managed/004-config.yaml
  • bindata/network/ovn-kubernetes/managed/ovnkube-control-plane.yaml
  • bindata/network/ovn-kubernetes/self-hosted/004-config.yaml
  • bindata/network/ovn-kubernetes/self-hosted/ovnkube-control-plane.yaml
  • docs/architecture.md
  • docs/operands.md
  • docs/ovn_node_mode.md
  • pkg/network/ovn_kubernetes_test.go
💤 Files with no reviewable changes (3)
  • README.md
  • docs/architecture.md
  • docs/operands.md
🚧 Files skipped from review as they are similar to previous changes (4)
  • bindata/network/ovn-kubernetes/managed/ovnkube-control-plane.yaml
  • bindata/network/ovn-kubernetes/self-hosted/004-config.yaml
  • bindata/network/ovn-kubernetes/common/008-script-lib.yaml
  • docs/ovn_node_mode.md

@yingwang-0320
Copy link
Copy Markdown

/verified by pre-merge testing.
Ran CNO and multicast cases, all passed.

@openshift-ci-robot openshift-ci-robot added the verified Signifies that the PR passed pre-merge verification criteria label Mar 31, 2026
@openshift-ci-robot
Copy link
Copy Markdown
Contributor

@yingwang-0320: This PR has been marked as verified by pre-merge testing..

Details

In response to this:

/verified by pre-merge testing.
Ran CNO and multicast cases, all passed.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci-robot openshift-ci-robot removed the verified Signifies that the PR passed pre-merge verification criteria label Mar 31, 2026
Remove TestOVNKubernetesControlPlaneFlags and
TestOVNKubernetesScriptLibCombined which reference undefined helpers
(renderControlPlaneWithOverrides, renderScriptLibWithOverrides) and
assert on flags that were moved to the ConfigMap.

Add missing unconditionally-emitted flags to the "enable network
connect (DevPreview)" test case expected output.

Made-with: Cursor
@tsorya tsorya force-pushed the igal/dpu-host-mode branch from ed84508 to 526a5aa Compare April 1, 2026 04:14
@tsorya
Copy link
Copy Markdown
Contributor Author

tsorya commented Apr 7, 2026

/retest-required

@tsorya
Copy link
Copy Markdown
Contributor Author

tsorya commented Apr 7, 2026

/retest-requires

@zshi-redhat
Copy link
Copy Markdown
Contributor

@tsorya hi, was there any QE testing done with this PR applied and automation/CI developed for the DPU-HOST mode? If so, would you mind pasting the testing result and CI links. I'd like to make sure we have a record for the testing on this PR and there is continuous CI job running to gate this functionality since we (core networking) currently don't have the necessary env nor CI to verify the piece of code for DPU functinoaliies.

@yingwang-0320 Sicne this change touches the enablement/disablement of several OVN-K features, could you also run testing for each of the mentioned features and see if they are functional as expected? meanwhile, like @tssurya suggested, we would also want to try enable the DPU Host mode (without testing DPU specific functionalities) and scheck if the cluster is stable.

@zshi-redhat
Copy link
Copy Markdown
Contributor

@danwinship Would you mind taking a look at this PR once the testing is done?
This is the PR that we merged, then reverted due to multicast regression. @tsorya proposed it again and confirmed that multicast is working with the current version.

@yingwang-0320
Copy link
Copy Markdown

@tsorya we don't have any DPU-HOST mode related testing yet. Not sure what environment or card needed to enable DPU-host mode, let me confirm and update here.

@yingwang-0320
Copy link
Copy Markdown

Confirmed with @tsorya , it's OK to verify CNO on regular mode.

@tsorya
Copy link
Copy Markdown
Contributor Author

tsorya commented Apr 9, 2026

/retest-required

@openshift-ci
Copy link
Copy Markdown
Contributor

openshift-ci bot commented Apr 9, 2026

@tsorya: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/e2e-aws-ovn-rhcos10-techpreview 526a5aa link false /test e2e-aws-ovn-rhcos10-techpreview
ci/prow/4.22-upgrade-from-stable-4.21-e2e-gcp-ovn-upgrade 526a5aa link false /test 4.22-upgrade-from-stable-4.21-e2e-gcp-ovn-upgrade
ci/prow/4.22-upgrade-from-stable-4.21-e2e-aws-ovn-upgrade 526a5aa link false /test 4.22-upgrade-from-stable-4.21-e2e-aws-ovn-upgrade
ci/prow/security 526a5aa link false /test security
ci/prow/e2e-metal-ipi-ovn-dualstack-bgp-local-gw 526a5aa link true /test e2e-metal-ipi-ovn-dualstack-bgp-local-gw
ci/prow/e2e-metal-ipi-ovn-dualstack-bgp 526a5aa link true /test e2e-metal-ipi-ovn-dualstack-bgp

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

egress_features_enable_flag=""

# disable multicast for dpu-host mode as it is not supported
enable_multicast_flag=""
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR/commit doesn't actually explain why we can get rid of all of this. Do we implement egress IPs and multicast in DPU mode now? Or does DPU mode just ignore the settings of these flags?

${export_network_flows_flags} \
${multi_network_enabled_flag} \
${network_segmentation_enabled_flag} \
${network_connect_enabled_flag} \
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're removing ${network_connect_enabled_flag} here but you still set it above.

Comment on lines -39 to -41
{{- if not .OVN_MULTI_NETWORK_ENABLE }}
enable-multi-network=true
{{- end }}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, so the handling of enable-multi-network is totally broken; we enable it whether OVN_MULTI_NETWORK_ENABLE is true or false.

It looks like when the "network segmentation" stuff was added, we made it so DisableMultiNetwork was ignored if the network segmentation feature gate was enabled, and then when that feature gate was removed, we ended up with a bunch of places doing "enable multi-network if OVN_MULTI_NETWORK_ENABLE is true and also enable multi-network if OVN_MULTI_NETWORK_ENABLE is false"...

You should remove all of the DisableMultiNetwork/OVN_MULTI_NETWORK_ENABLE code from the tree. (Ideally, that would be a separate commit before this one.)

${multi_network_enabled_flag} \
${network_segmentation_enabled_flag} \
${gateway_mode_flags} \
${network_connect_enabled_flag} \
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You removed the setting of network_connect_enabled_flag but you forgot to remove it here.

{{- end }}
enable-admin-network-policy=true
enable-multi-external-gateway=true
enable-multicast=true
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(I can't comment on the commit message directly; you should explain there that the issue is that there isn't an enable-multicast config file option. The flag can only be set via the CLI.)

})
}

func TestOVNKubernetesControlPlaneFlags(t *testing.T) {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This whole commit should be squashed into the first commit. It doesn't make sense to commit a fix that breaks the unit tests first, and then have a second commit to unbreak them.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

jira/valid-reference Indicates that this PR references a valid Jira ticket of any type.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants